﻿using System.Web.UI.WebControls;
using ClickLand.CorporacionPlaza.Presentacion.Contratos.AdministracionCliente;
using ClickLand.CorporacionPlaza.Presentacion.Controladores;
using ClickLand.CorporacionPlaza.Presentacion.CorporacionPlazaWS;
using ClickLand.CorporacionPlaza.Utilidades;

namespace ClickLand.CorporacionPlaza.Presentacion.Presentadores.AdministracionCliente
{
    /// <summary>
    /// clase que hace de presentador para la vista de que agrega un cliente
    /// </summary>
    public class PresentadorAgregarCliente:PresentadorBase
    {
        #region Atributos

        /// <summary> Objeto que posee la informacion de la vista </summary>
        private readonly IAgregarCliente _vista;


        /// <summary> Objeto que posee la declaracion del controlador del modulo </summary>
        private ControladorAdministracionCliente _controlador;

        #endregion

        #region Constructor

        /// <summary> Constructor de la clase </summary>
        /// <param name="vista">datos de la vista</param>
        public PresentadorAgregarCliente(IAgregarCliente vista)
        {
            _vista = vista;
            _controlador = new ControladorAdministracionCliente();
        }

        #endregion

        #region Metodos

        /// <summary> Metodo que se encarga de las operaciones cuando se carga la pagina </summary>
        public void CargarPagina()
        {
            CargarListaSinValor(_vista.CodigoAreaCelular, "codigoAreaCelular",false);
            CargarListaSinValor(_vista.TipoCliente, "tipoCliente",false);
        }


        /// <summary> Metodo que se encarga de las operaciones para agregar un cliente </summary>
        public void AgregarCliente()
        {
            var cliente = new ClienteDto();
            cliente.Nombre = _vista.Nombre.Text;
            cliente.Correo = _vista.Correo.Text;
            cliente.DocumentoIdentificacion = _vista.LetraCedulaRif.SelectedValue + _vista.CedulaRif.Text;
            cliente.NumeroCelular = _vista.CodigoAreaCelular.Text + _vista.TelefonoCelular.Text;
            cliente.NumeroOficina = _vista.CodigoAreaOficina.Text + _vista.TelefonoOficina.Text;
            cliente.Estado = (int)Estados.Inactivo;
            cliente.Responsable1 = _vista.Responsable1.Text;
            cliente.Responsable2 = _vista.Responsable2.Text;
            cliente.Responsable3 = _vista.Responsable3.Text;
            cliente.Tipo = _vista.TipoCliente.SelectedItem.Text;

            _vista.Paneles.SetActiveView(_controlador.AgregarModificarCliente(cliente)
                                             ? _vista.VistaExito
                                             : _vista.VistaError);

        }


        /// <summary> Metodo que realiza las operaciones para mostrar la confirmacion de la operacion </summary>
        public void MostrarConfirmacion()
        {
            _vista.NombreConfirmacion.Text = _vista.Nombre.Text;
            _vista.CorreoConfirmacion.Text = _vista.Correo.Text;
            _vista.DocumentoIdentificacionConfirmacion.Text = _vista.LetraCedulaRif.SelectedValue + _vista.CedulaRif.Text;
            _vista.NumeroCelular.Text = _vista.CodigoAreaCelular.Text + _vista.TelefonoCelular.Text;
            _vista.NumeroOficina.Text = _vista.CodigoAreaOficina.Text + _vista.TelefonoOficina.Text;
            _vista.Responsable1Confirmacion.Text = _vista.Responsable1.Text;
            _vista.Responsable2Confirmacion.Text = _vista.Responsable2.Text;
            _vista.Responsable3Confirmacion.Text = _vista.Responsable3.Text;
            _vista.EsClienteJuridico = !_vista.TipoCliente.SelectedValue.Equals("Natural");
            _vista.TipoClienteConfirmacion.Text = _vista.TipoCliente.SelectedItem.Text;
            _vista.Paneles.SetActiveView(_vista.VistaConfirmacion);
        }


        /// <summary>
        /// Metodo que llena el dropdownlist segun la seleccion del cliente
        /// </summary>
        public void SeleccionarTipoCliente()
        {

            _vista.EsClienteJuridico = !_vista.TipoCliente.SelectedValue.Equals("Natural");
            _vista.LetraCedulaRif.Items.Clear();
            _vista.LetraCedulaRif.Items.Add(new ListItem(" "));
            CargarListaSinValor(_vista.LetraCedulaRif,
                                _vista.TipoCliente.SelectedValue.Equals("Natural")
                                    ? "letraRifNatural"
                                    : "letraRifJuridico", false);
        }
        #endregion
    }
}
